/***************************************************************************
 *            recibo.h
 *
 *  Mon May 16 14:31:55 2011
 *  Copyright  2011  Alcione Ferreira
 *  <alcione.sombra@gmail.com>
 ****************************************************************************/

#ifndef __RECIBO_H__
#define __RECIBO_H__ 1 
#include <bibliotecas.h>
#include <relatorio.h>
#include <imprimir.h>

/** Prototipação de tipagem para acesso às informações de um TreeView*/
typedef Gtk::TreeModel::Children type_children;

/** Estrutura especial para seleção de itens de TreeView*/
typedef struct 
	{
	int codigo;/**<Código do serviço selecionado*/
	string cod_id;/**<Código do serviço selecionado conforme o tipo.*/
	string descricao;/**<Descrição do serviço selecionado*/
	int quantidade;/**<Quantidade do serviço selecionado*/
	float valor_u;/**<Valor Unitário do serviço selecionado*/
	float valor;/**<Valor Total do serviço selecionado*/
	float desconto;/**<Valor do Desconto do serviço selecionado*/
	float funjecc;/**<Valor do Funjecc 10% do serviço selecionado*/
	float issqn;/**<Valor do ISSQN do serviço selecionado*/
	bool fj10;/**<Flag de controle para o calculo dos impostos*/
	}ServicosLAN;

/** Classe Template COLUNASR 
 ela reimplementa a classe Gtk::TreeModel::ColumnRecord e é utilizada para 
 TreeView e EntryCompletion.
 */
class COLUNASR : public Gtk::TreeModel::ColumnRecord
	{
	public : 
		/**Construtor da Classe*/
		COLUNASR ();
		/**Destrutor da Classe*/
		~COLUNASR ();
		Gtk::TreeModelColumn<int> cod_func;/**<Armazena o código de funcionário*/
		Gtk::TreeModelColumn<int> n_recibo;/**<Armazena o número do recibo*/
		Gtk::TreeModelColumn<int> tipo;/**<Armazena o tipo de recibo que refere-se o número*/
		Gtk::TreeModelColumn<float> campo_num;/**<Armazena campo número com casas decimais*/
		Gtk::TreeModelColumn<float> valor_u;/**<Armazena campo número com casas decimais, utilizado no valor unitário do serviço*/
		Gtk::TreeModelColumn<int> campo_int;/**<Armazena campo número sem casas decimais*/
		Gtk::TreeModelColumn<int> campo_int2;/**<Armazena campo número sem casas decimais*/
		Gtk::TreeModelColumn<string> data;/**<Armazena campo do tipo string para data*/
		//Recibo Impressão
		Gtk::TreeModelColumn<int> cod_cli;/**<Armazena código do cliente*/
		Gtk::TreeModelColumn<int> cod_servico;/**<Armazena código do serviço*/
		Gtk::TreeModelColumn<string> Dados[7];/**<Armazena dados do tipo string em um vetor de 7 posições no máximo*/
		Gtk::TreeModelColumn<Glib::ustring> descricao; /**<Armazena campo ustring para apresentação em EntryCompletion e ComboBoxText*/
		Gtk::TreeModelColumn<Glib::ustring> campo[7];/**<Armazena campo ustring para apresentação em TreeView*/

	private:
		int n_campos;/**<Campo contador de armazenamento para apresentação*/		
	};

/** Classe RECIBO
 é responsável por emitir os recibos de Entrada e Saída, bem como controle sobre eles.
 */
class RECIBO
	{
	public:
		/** Construtor da Classe RECIBO */
		RECIBO(BANCOPG *, int , bool);
		/** Destrutor da Classe RECIBO*/
		~RECIBO();
		Gtk::Window Principal; /**<Janela Principal*/
		Gtk::Window *Recibo; /**<Janela de Emissão de Recibos*/
		Gtk::Window *Consulta; /**<Janela de Consulta de Nomes no sitema de Notas*/
		Gtk::Window *Ultimos; /**<*/
		Gtk::Window *Consulta_Cli; /**<*/

	protected:
		Gtk::Window *Fun_Dig; /**<Janela de Checagem de digitador/funcionário.*/
		Gtk::Button *Fun_OK;/**<Botão de OK da Janela de Checagem*/ 
		Gtk::Button *Fun_CANCEL;/**<Botão de Cancelar da Janela de Checagem.*/
		Gtk::Entry *E_CodFun;/**<Entry que recebe o código do digitador/funcionário que está emitindo o recibo.*/ 
		Gtk::Entry *E_NomeFun;/**<Entry que mostra o nome do digitador/funcionário segundo seu código.*/
		Gtk::RadioButton *Credito;/**<RadioButton responsável pela seleção de recibo de Crédito.*/
		Gtk::CheckButton *B_Cred;/**<CheckButton responsável pela seleção de recibo de Crédito.*/
		Gtk::CheckButton *Ato_Gratuito;

		Gtk::Window *SelRec; /**<Janela de Seleção de recibo para edição */
		Gtk::Button *SelOK; /**<Botão OK da Janela de Seleção*/
		Gtk::Button *SelCancel; /**<Botão Cancel da Janela de Seleção */
		Gtk::Button *SelIMP; /**<Botão Cancel da Janela de Seleção */
		Gtk::Entry *SelNumero; /**<Entry que recebe o número desejado */
		Gtk::Entry *SelData; /**<Entry que recebe a data desejada */
		
		COLUNASR arvore_reg; /**<Estrutura de armazenamento*/
		COLUNASR dados_arv; /**<Estrutura de armazenamento*/
		Glib::RefPtr<Gtk::ListStore> arvore_ref; /**<Ponteiro especial para utilização de estrurura de armazenamento.*/
		Glib::RefPtr<Gtk::ListStore> dados_rec; /**<Ponteiro especial para utilização de estrurura de armazenamento.*/
		Glib::RefPtr<Gtk::ListStore> dados_ref; /**<Ponteiro especial para utilização de estrurura de armazenamento.*/
		Glib::RefPtr<Gtk::ListStore> dados_serv; /**<Ponteiro especial para utilização de estrurura de armazenamento.*/
		Glib::RefPtr<Gtk::ListStore> dados_historico; /**<Ponteiro especial para utilização de estrurura de armazenamento.*/
		Glib::RefPtr<Gtk::ListStore> dados_datas; /**<Ponteiro especial para utilização de estrurura de armazenamento.*/
		Glib::RefPtr<Gtk::ListStore> dados_numeros; /**<Ponteiro especial para utilização de estrurura de armazenamento.*/
		Glib::RefPtr<Gtk::ListStore> dados_protdata; /**<Ponteiro especial para utilização de estrurura de armazenamento.*/
		Glib::RefPtr<Gtk::ListStore> dados_protnum; /**<Ponteiro especial para utilização de estrurura de armazenamento.*/			
		Glib::RefPtr<Gtk::ListStore> dados_ultimos; /**<Ponteiro especial para utilização de estrurura de armazenamento.*/
 		Gtk::TreeModel::Row celula; /**<Gtk::TreeModel::Row utilizado na inclusão de dados em TreeView.*/

		/** Método utilizado para carregar janelas do Sistema. */
		void carregar_janela();
		/** Método utilizado para fechar determinada janela do sistema. */
		void sair(int);
		/** Método utilizado para aceitar apenas dígitos em Entrys. */
		void digito(int);
		void digitos(Gtk::Entry *);
		/** Método utilizado para aceitar e converter letras para maiúsculo em Entrys. */
		void letra(int);
		/** Método utilizado para saltar entre as Entrys de uma Tela. */
		void tabular(int);
		/** Método utilizado para saltar entre as Entrys da Tela de Checagem de digitador/funcionário. */
		void tabular2();
		void tabulacao(Gtk::Window *, Gtk::Widget *);
		/** Método utilizado para limpar o Form do Cadastro de Cliente na Tela de Recibo. */
		void limpar_form_cliente(int,int);
		/** Método utilizado para limpar o Form do Cadastro de Serviços na Tela de Recibo. */
		void limpar_form_servico(int);
		/** Método utilizado para preparar os dados em EntryCompletions e ComboBoxTexts. */
		void preparar_dados(int,int);
		/** Método utilizado para checar o cadastro de um determinado cliente.*/
		void checar_clienteE(int);
		/** Método utilizado para checar o cadastro de um determinado serviço.*/
		void checar_servicoE(int);
		/** Método utilizado para cadastramento de novos clientes.*/
		void novo_cliente(int);

		Gtk::Label *L_Janela; /**<Ponteiro Gtk::Label auxiliar da janela RECIBO::Principal.*/
		Gtk::Frame *F_Janela; /**<Ponteiro Gtk::Frame auxiliar da janela RECIBO::Principal.*/
		Gtk::VBox *VB_Janela; /**<Ponteiro Gtk::VBox auxiliar da janela RECIBO::Principal.*/
		Gtk::HBox *HB_Janela; /**<Ponteiro Gtk::HBox auxiliar da janela RECIBO::Principal.*/
		Gtk::Button *BT_Janela; /**<Ponteiro Gtk::Button auxiliar da janela RECIBO::Principal.*/

		Gtk::HBox HP_Funcionario; /**<Gtk::HBox utilizado como container da listagem de funcionários*/
		Gtk::HBox HP_Movimento; /**<Gtk::HBox utilizado como container do Movimento.*/
		Gtk::HBox HP_Resumos; /**<Gtk::HBox utilizado como container do Resumo. */
		Gtk::VBox B_Principal; /**<Gtk::VBox utilizado como container principal da janela RECIBO::Principal.*/
		Gtk::ComboBoxText CBP_Funcionario; /**<Gtk::ComboBoxText utilizado para listar os funcionários do sistema.*/
		Gtk::ComboBoxText CBP_Datas; /**<Gtk::ComboBoxText utilizado para listar datas de movimento do funcionário logado/selecionado.*/
		Gtk::ScrolledWindow S_Recibos; /**<Gtk::ScrolledWindow utilizado para adicionar barra de rolagem no RECIBO:T_Recibos.*/
		Gtk::ScrolledWindow S_Resumo; /**<Gtk::ScrolledWindow utilizado para adicionar barra de rolagem no RECIBO:T_Resumo.*/
		Gtk::TreeView T_Recibos; /**<Gtk::TreeView onde é carregado os últimos 15 recibos do Movimento Atual do funcionário logado/selecionado.*/
		Gtk::TreeView T_Resumo; /**<Gtk::TreeView onde é carregado o resumo do Movimentao Atual do funcionário logado/selecionado.*/
		Gtk::Button BT_Reimprimir; /**<Gtk::Button utilizada para reimprimir um recibo.*/
		Gtk::Button BT_Ultimos; /**<*/
		Gtk::Label L_Data; /**<Gtk::Label utilizada para mostrar a data do Movimento Atual.*/

		/** Método acionado quando uma linha da TreeViewColumn é clicado duas vezes com o mouse. */
		void selecionado(const Gtk::TreeModel::Path& , Gtk::TreeViewColumn* );
		/** Método acionado quando uma linha da TreeViewColumn é clicado duas vezes com o mouse. */
		void selecionadoU(const Gtk::TreeModel::Path& , Gtk::TreeViewColumn* );

		Gtk::Entry *Rec_CliCod; /**<Gtk::Entry que guardar o código de um cliente. */
		Gtk::Entry *Rec_Cliente; /**<Gtk::Entry que guardar o nome de um cliente. */
		Gtk::Entry *Rec_End; /**<Gtk::Entry que guardar o endereço de um cliente. */
		Gtk::Entry *Rec_Doc; /**<Gtk::Entry que guardar o documento de um cliente. */
		Gtk::Entry *Rec_OBS; /**<Gtk::Entry que guardar o documento de um cliente. */

		Gtk::Entry *Rec_SerCod; /**<Gtk::Entry que guardar o código de um serviço. */
		Gtk::Entry *Rec_Servico; /**<Gtk::Entry que guardar a descrição de um serviço. */
		Gtk::Entry *Rec_SerQtd; /**<Gtk::Entry que guardar a quantidade digitada de um serviço. */
		Gtk::Entry *Rec_SerValor; /**<Gtk::Entry que guardar o valor calculado de um serviço. */
		Gtk::Entry *Rec_SerDesc; /**<Gtk::Entry que guardar o valor de desconto digitado de um serviço. */
		Gtk::Entry *Rec_SerVUni; /**<Gtk::Entry que guardar o valor unitário de um serviço. */
		Gtk::Entry *RecSer_Hist; /**<Gtk::Entry que guardar o historico complementar do recibo de saída. */

		Gtk::Entry *Rec_SubT; /**<Gtk::Entry que guardar o sub-total do recibo. */
		Gtk::Entry *Rec_Funjecc; /**<Gtk::Entry que guardar o valor total do Funjecc 10%. */
		Gtk::Entry *Rec_ISSQN; /**<Gtk::Entry que guardar o valor total do ISSQN. */
		Gtk::Entry *Rec_Desconto; /**<Gtk::Entry que guardar o valor total do desconto. */
		Gtk::Entry *Rec_Total; /**<Gtk::Entry que guardar o valor total do recibo. */
		Gtk::Entry *Rec_NUMERO; /**<Gtk::Entry que guarda o número do recibo gerado pelo método RECIBO::gerar_numero */

		Gtk::Label *Rec_Natureza; /**<Gtk::Label utilizada para identificar a natureza do cliente: Física ou Jurídica. */
		Gtk::Label *Rec_DadosL[5]; /**<Vetor de Gtk::Label utilizada para nomear totalizadores da tela RECIBO::Recibo. */
		Gtk::Label *Rec_Status; /**<Gtk::Label utilizada para mostrar o status do recibo. */
		Gtk::Label *Rec_INFO[2]; /**<Gtk::Label utilizada para mostrar o status do recibo. */
		Glib::RefPtr<Gtk::EntryCompletion> Cliente_List; /**<Ponteiro especial para autocompletar dados de clientes.*/
		Gtk::VBox *Rec_Principal; /**<Gtk::VBox principal da tela RECIBO::Recibo.*/
		Gtk::Button *Rec_CadServ; /**<Gtk::Button utilizada para incluir um serviço na RECIBO::Rec_Dados.*/
		Gtk::Button *Rec_DelServ; /**<Gtk::Button utilizada para remover um serviço selecionado da RECIBO::Rec_Dados.*/
		Gtk::Button *Rec_AltServ; /**<Gtk::Button utilizada para salvar as alterações feitas em um serviço selecionado da RECIBO::Rec_Dados.*/
		Gtk::Button *Rec_GERAR; /**<Gtk::Button utilizada por inserir os dados do recibo na base e mostrar o número gerado na RECIBO::Rec_NUMERO, liberando RECIBO::Rec_IMPRIMIR para impressão.*/
		Gtk::Button *Rec_IMPRIMIR; /**<Gtk::Button utilizada para gerar a visualização do recibo para impressão.*/
		Gtk::Button *Rec_SALVAR; /**<Gtk::Button utilizada para gravar as alterações */
		Gtk::Button *Rec_BDebCred; /**<Gtk::Button utilizada para gravar as alterações */
		Gtk::Button *Rec_ConsDoc; /**<Gtk::Button utilizada para consultar documentos no Notas */
		Gtk::Button *Rec_ConsFic; /**<Gtk::Button utilizada para consultar fichas no notas */
		Gtk::Button *Rec_CancelServ; /**<Gtk::Button utilizada para Cancelar Recibo */
		
		Gtk::TreeView *Rec_Dados; /**<Gtk::TreeView utilizada para listar serviços lançados em um recibo.*/
		Gtk::ScrolledWindow *Rec_Scroll; /**<Gtk::ScrolledWindow utilizado como barra de rolagem do RECIBO::Rec_Dados */
		Gtk::TreeView *Rec_UDados; /**<Gtk::TreeView utilizada para listar serviços lançados em um recibo.*/
		Gtk::ScrolledWindow *Rec_UScroll; /**<Gtk::ScrolledWindow utilizado como barra de rolagem do RECIBO::Rec_Dados */

		Glib::RefPtr<Gtk::EntryCompletion> EntryCliente; /**<Ponteiro especial para autocompletar nome de clientes.*/
		Glib::RefPtr<Gtk::EntryCompletion> EntryServico; /**<Ponteiro especial para autocompletar descrições de serviços.*/
		Glib::RefPtr<Gtk::EntryCompletion> EntryHistorico; /**<Ponteiro especial para autocompletar históricos complementares.*/
		Glib::RefPtr<Gtk::EntryCompletion> EntryData; /**<Ponteiro especial para autocompletar datas de recibos. */
		Glib::RefPtr<Gtk::EntryCompletion> EntryNumeros; /**<Ponteiro especial para autocompletar números de recibos. */
		Glib::RefPtr<Gtk::EntryCompletion> EntryProtData; /**<Ponteiro especial para autocompletar data de protocolos. */
		Glib::RefPtr<Gtk::EntryCompletion> EntryProtNum; /**<Ponteiro especial para autocompletar data de protocolos. */
		
		Gtk::Entry *Prot_Data; /**<Gtk::Entry utilizado para listar datas de protocolos. (dados externos)*/
		Gtk::Entry *Prot_Numero; /**<Gtk::Entry utilizado para listar protocolos. (dados externos)*/
		/** Método utilizado para mudar o cursos de posição em uma Entry. */
		void set_posicao(Gtk::Entry * , int );
		/** Método utilizado para checar data digitada.*/
		void data_mascara(int);

		Gtk::Toolbar *Rec_SaidaT;/**<Gtk::Toolbar da janela PRINCIPAL::Saldos*/
		Gtk::ToolItem *Rec_SaidaTI; /**<*/
		Gtk::ToolButton *Rec_SaidaTB[8];/**<Gtk::ToolButton da janela PRINCIPAL::Saldos*/
		Gtk::Entry *Rec_SaidaTE; /**<*/
		Gtk::Label *Rec_SaidaTL; /**<*/
		Gtk::Label *Rec_SaidaStatus; /**<*/

		Gtk::ScrolledWindow *CS_Cliente;/**<Gtk::ScrolledWindow do PRINCIPAL::CT_Cliente.*/
		Gtk::TreeView *CT_Cliente;/**<Gtk::TreeView da tela PRINCIPAL::Cliente.*/
		COLUNASR arvore_cli;/**<Estrutura de árvore para Gtk::TreeView.*/
		Glib::RefPtr<Gtk::ListStore> arvore_refc;/**<Ponteiro de referência para PRINCIPAL::arvore_reg*/

  private:
		bool caixa;/**<*/
		bool s_issqn;/**<*/
		bool t_ultimos;/**<*/
		bool ato_gratuito;/**<*/
		int pos_entry;/**<Atributo que guarda a posição inicial de um texto de Entry.*/
		int entry_ativa;/**<Atributo que informa qual entry está ativa.*/

		int saida_total;/**<*/
		int saida_pagina;/**<*/
		string saida_numero;/**<*/
		string saida_data;/**<*/
				
		BANCOPG *conexao; /**<Ponteiro da classe BANCO utilizado para conectar-se com o SGBD PostgreSQL*/
		BANCOMY *conexao_pt; /**<Ponteiro da classe BANCO utilizado para conectar-se com o SGBD MySQL*/
		BANCOMY *conexao_nt; /**<Ponteiro da classe BANCO utilizado para conectar-se com o SGBD MySQL*/

		ServicosLAN servicos; /**<Estrutura utilizada para salvar informações de um serviço selecionado.*/
		ServicosLAN totalizador; /**<Estrutura utilizada para salvar informações totalizadoras de serviços de um recibo.*/

		int cod_fun; /**<Atributo utilizado para guardar o código do funcionário logado.*/
		int cod_fun_sel; /**<Atributo utilizado para guardar o código do funcionário selecionado.*/
		int n_acesso; /**<Atributo utilizado para guardar o nível de acesso do funcionário logado.*/
		int cod_fun_dig; /**<Atributo utilizado para guardar o código do funcionário/digitador do recibo.*/
		bool deb_cred; /**<Atributo utilizado como flag de controle para o tipo de recibo: débito ou crédito.*/
		string n_func; /**<Atributo utilizado para guardar o nome do funcionário logado.*/
		string n_login; /**<Atributo utilizado para guardar o login do funcionário logado.*/
		string data_sel; /**<Atributo utilizado para guardar a data selecionada.*/
			
		/** Método utilizado para carregar os dados do funcionário logado. */
		void carregar_usuario();

		Glib::RefPtr<Gdk::Pixbuf> ponteiro_icon;/**<Ponteiro especial utilizado para carregar icone da Janela.*/
		int janela; /**<Atributo utilizado como flag de controle de Janela ativa.*/
		int status_p; /**<Atrituto utilizado para controle do status da janela Principal.*/
			
		/** Método utilizado para lista os funcionários do sistema em uma ComboBoxText */
		void listagem_funcionario();
		/** Método utilizado para selecionar um funcionário e carregar seus dados*/
		void selecionar_funcionario();
		/** Método utilizado para listar as datas dos movimentos para geração de relatório.*/
		void listar_datas(int);
		/** Método utilizado para efetuar a primeira visualização da tela Principal do Recibo.*/
		void carregar_primeiro();
		/** Método utilizado para listar em uma TreeViewColumn os últimos recibos emitidos do funcionário logado/selecionado. */
		void carregar_recibos(int);
		/** Método utilizado para carregar o resumo dos serviços.*/
		void carregar_resumo(int);
		/** Método utilizado para carregar os dados do último movimento do funcionário logado/selecionado. */
		void ultima_data(int);
		/** Método utilizado para carregar os relatórios do sistema.*/
		void relatorio(int);

		int cod_servico; /**<Atributo que guarda o código do serviço atual.*/
		bool funjecc10; /**<Atributo que funciona como flag de controle para cálculo de imposto.*/
		bool alterado; /**<Atributo que funciona como flag de controle para alteração ou inclusão de serviços. */
		int itens; /**<Atributo que guarda a quantidade de serviços inseridos. */
		float vlr_desc; /**<Atributo que guarda o valor total de desconto do recibo. */
		float vlr_total; /**<Atributo que guarda o valor total do recibo. */
		float vlr_funjecc; /**<Atributo que guarda o valor total do funjecc 10% do recibo. */
		float vlr_issqn; /**<Atributo que guarda o valor total do ISSQN do recibo. */
		float vlr_subtotal; /**<Atributo que guarda o valor sub-total do recibo. */
		float vlr_bsissqn; /**<Atributo que guarda o valor da base de substituição tributária do ISSQN. */

		/** Método utilizado para salvar o recibo de saída.*/
		void saida(int );
		/** Método utilizado para carregar a tela de Recibo de entrada/saída para preenchimento e impressão.*/
		void gerar_recibo(int);
		/** Método utilizado para calcular o valor do serviço digitado juntamente com o valor dos impostos.*/
		void calcular_valor(int);
		/** Método utilizado para incluir um serviço no recibo. */
		void incluir_servico();
		/** Método utilizado para incluir um serviço no recibo. */
		void incluir_servicos(int,string);
		/** Método utilizado para selecionar um serviço para alteração.*/
		void selecionar_servico(const Gtk::TreeModel::Path& ,Gtk::TreeViewColumn* );
		Gtk::TreeModel::Row reg_selecionado;/**<Utilizada para armazenar TreeModelColumn selecionada.*/
		/** Método utilizado para carregar um serviço selecionado. */
		void carregar_servico_sel();
		/** Método utilizado para gerar o número do recibo emitido. */
		void gerar_numero(int);
		/** Método utilizado para carregar Janela de checagem de funcionário/digitador.*/
		void Funcionario(int);
		/** Método utilizado para checar a existência de funcionário/digitador.*/
		void Checar_Digitador();
		/** Método utilizado para carregar dados no sistema.*/
		void carregar_dados(int,int);
		/** Método utilizado para carregar o recibo para impressão.*/
		void imprimir(int);

		string data_protocolo;/**<Atributo utilizado para armazenar a data do protocolo selecionada.*/
		string numero_protocolo;/**<Atributo utilizado para armazenar o protocolo selecionado.*/
		/** Método utilizado para atualizar dados de cliente do tipo apresentante.*/
		void update_apresentante(string);
		/** Método utilizado para editar um determinado recibo.*/
		void editar_recibo();
		string numero_recibo; /**<Atributo utilizado para armazenar um número de recibo para exibição.*/
		string data_recibo; /**<Atributo utilizado para armazenar a data de um número de recibo para exibição.*/

		void checar_ano(int); /**Método utilizado para checagem do ano corrente.*/
		void carregar_recibo(); /**Método utilizado para carregar recibo selecionado para edição.*/
		void liberar_alteracao(); /**Método utilizado para liberar o recibo para edição.*/
		void salvar_alteracao(); /**Método utilizado para salvar alterações em recibo selecionado para edição*/
		void voltar_edicao(); /**Método recarrega dados do recibo alterado.*/
		void remover_servico(); /**Método utilizado para remover um serviço selecionado */
		void consultar_dados(int); /**Método utilizado para consultar dados na base do Notas */
		void carregar_ficha(string dados[5]);/** */
		void cancelar_recibo();/** */
		void checagem_cancelamento(Gtk::Window *, Gtk::Entry *, Gtk::Label *, Gtk::Widget *,int );/** */

		void carregar_saida ();/** */
		void saida_navegar (int);/** */
		void saida_acao (int);/** */

		void voltar_credito();/** */

		int contar_selos(int );/** */

		void consultar_cliente ();/** */
		void carrega_cliente(Gtk::Entry *);/** */
		void cli_sel(const Gtk::TreeModel::Path& , Gtk::TreeViewColumn* );/** */

		float arredondar(float);/** */
		float vlrs[4];/**<*/
		void ultimos_recibos();/** */
		bool carregar_ultimos();/** */
		void sairU();/** */
		/** Método para carregar informações do resumo de títulos pagos*/
		void resumo_titulos();

		/**Método utilizado para checar os campos da tela de recibo*/
		void checar_campos(int);
		
	};

#endif /*__RECIBO_H__*/
